package com.conlin.learn.common.decorator;

import com.conlin.learn.common.proxy.CommonService;

/**
 * 使用装饰器模式，通过包装目标对象来添加额外的行为（如记录执行时间）。装饰器模式是一种结构型设计模式，它允许您在不修改原始类的情况下为对象添加新的功能。
 */
public class LoggingMyServiceDecorator implements CommonService {

    private final CommonService delegate;

    public LoggingMyServiceDecorator(CommonService delegate) {
        this.delegate = delegate;
    }

    @Override
    public void doSomething() {
        // 记录方法开始时间
        long startTime = System.currentTimeMillis();
        System.out.println("方法 doSomething 开始执行...");

        // 调用目标方法
        delegate.doSomething();

        // 记录方法结束时间
        long endTime = System.currentTimeMillis();
        System.out.println("方法 doSomething 执行完毕，耗时: " + (endTime - startTime) + " 毫秒");
    }
}